Синтаксические конструкции Groovy
Синтаксические конструкции Groovy
Синтаксис Groovy значительно проще:
// Переменные без указания типа
def name = "Alice"
println "Hello, $name"
// Замыкания
def greet = { name -> println "Hello, $name" }
greet("Bob")
// Списки
def list = [1, 2, 3]
// Мапы
def map = [name: "John", age: 30]
// Работа с файлами
new File('test.txt').eachLine { line ->
println line
}
// Исключения
try {
def result = 1 / 0
} catch (e) {
println "Error: ${e.message}"
}
Фреймворки и инструменты Groovy:
| Название | Описание |
|---|---|
| Grails | MVC-фреймворк для веб-приложений, аналог Spring Boot, но более DSL-ориентированный. |
| Spock | Фреймворк для тестирования, позволяет писать читаемые и выразительные тесты. |
| Gradle | Система сборки, использующая Groovy (или Kotlin DSL) для описания билда. |
| Micronaut | Легковесный фреймворк для микросервисов, поддерживает Groovy. |
| Quarkus | Современный фреймворк для GraalVM и контейнеров, поддерживает Groovy. |
| Geb | Браузерный тестовый фреймворк на основе WebDriver. |
Сфера применения Groovy:
- Автоматизация задач – скрипты администрирования, обработка файлов, логов, данных.
- Тестирование – покрытие юнит-, интеграционного тестирования, использование Spock и JUnit.
- Веб-разработка – Grails, полноценный веб-фреймворк, и Micronaut, Quarkus его современные альтернативы.
- CI/CD – Jenkinsfile использует Groovy как основной DSL для описания пайплайнов.
- Сборка проектов – Gradle – де-факто стандарт для Android и Java-проектов.
- Обработка данных – Groovy удобен для скриптов обработки CSV, JSON, XML, SQL.
Важные классы и интерфейсы Groovy
| Класс, интерфейс | Назначение |
|---|---|
| Closure | Аналог лямбда-выражений в Java, используется в Groovy активно. |
Map, List, Set | Расширенные возможности работы с коллекциями. |
File, URL, URLConnection | Упрощённая работа с файлами и сетью. |
GroovyShell, GroovyScriptEngine | Для динамического исполнения Groovy-скриптов. |
Eval | Вычисление строкового выражения (например, Eval.x(2, 'x + 1')). |
Expando | Динамический объект, можно добавлять поля и методы на лету. |
MetaClass | Для изменения поведения классов на лету. |
DataSet | Для работы с SQL-запросами и представлениями. |
MarkupBuilder, StreamingMarkupBuilder | Генерация XML/HTML. |
JsonSlurper, JsonOutput | Чтение и запись JSON. |
XmlSlurper, XmlNodePrinter | Парсинг и генерация XML. |
Примеры часто встречающихся задач и решений:
- Парсинг JSON:
def json = '{"name":"Alice","age":25}'
def Данные = new groovy.json.JsonSlurper().parseText(json)
println Данные.name // Alice
- Запись JSON:
def Данные = [name: "Bob", age: 30]
def json = new groovy.json.JsonOutput().toJson(Данные)
println json
- Чтение XML:
def xml = '''
<people>
<person name="John"/>
</people>'''
def root = new XmlSlurper().parseText(xml)
println root.person.@name
- Генерация HTML:
def html = new groovy.xml.MarkupBuilder()
html.html {
head { title "Page Title" }
body {
h1 "Hello from Groovy!"
}
}
См. также
Другие статьи этого же раздела в боковом меню (как на странице «О разделе»). История Groovy — это кейс эволюции технологии в условиях доминирующей платформы. Из неё можно извлечь несколько обобщаемых принципов. Фундамент для начинающего программиста - что повторить, как работать, чего ожидать. Набор советов, правил, принципов и обычаев в разработке на этом языке. Макросы на уровне языка (начиная с Groovy 2.5) — groovy.transform.Macro позволяет инжектить код, основываясь на анализе AST. Типизация, набор правил определения типа данных значений языка. Арифметические операторы в Groovy предназначены для выполнения математических операций над числами. К ним относятся — + — сложение. Применяется к числам, а также к строкам, где он выполняет… В языке Groovy циклы реализованы как через классические управляющие конструкции, унаследованные от Java и других императивных языков, так и через более выразительные, декларативные подходы,… В этом примере greet — это переменная, содержащая замыкание. Замыкание принимает один параметр name и выводит приветствие. Вызов greet(Groovy) выполняет код внутри замыкания. Нет проверяемых исключений — компилятор Groovy игнорирует механизм throws, принятый в Java. Groovy позволяет работать с переменными без явного указания типа (def), что делает его гибким для скриптов. Кавычки, точки, запятые, скобки и прочие знаки препинания. Groovy использует все ключевые слова Java и добавляет собственные для упрощения синтаксиса. Справочник разделён на логические группы для удобства использования.История языка Groovy
Что требуется знать перед началом изучения языка программирования Groovy
Рекомендации по разработке на Groovy
Основы языка Groovy
Типы данных и объявление переменных
Операторы и выражения в Groovy
Циклы и управляющие конструкции
Объектно-ориентированное программирование в Groovy
Иерархия исключений в Groovy
Особенности и расширения языка Groovy
Синтаксис и пунктуация в Groovy
Ключевые слова языка Groovy